【iOSDC Japan 2024 レポート】DAY 0「MPEG構造を把握し、VideoToolBoxを使った特殊再生の実装方法を理解する」を聞いてきた。
はじめに
年に一度のiOSエンジニアの為のお祭りiOSDC Japan 2024に参加しています。
せっかくなので、参加したセッションのレポートを書きたいと思います。
MPEG構造を把握し、VideoToolBoxを使った特殊再生の実装方法を理解する
登壇者
- k2moonsさん
概要
VideoToolBoxは、AVPlayerなどが属するAVFoundationのさらに低位のレイヤーで、動画の圧縮(エンコード)や伸張(デコード)を行います。AVPlayerは非常に優秀なため、ほとんどの場合、VideoToolBoxを直接利用する必要はありません。しかし、MPEGの構造を理解し、VideoToolBoxを使って特殊再生を行うことで、AVPlayerがどれほど複雑な処理を行っているかを垣間見ることができます。
このトークでは、カメラで撮影した映像ファイルをVideoToolBoxで特殊再生する方法を解説します。
- PTS (Presentation Time Stamp) と同期処理の基礎:
PTSの役割と、時間同期ついて説明します。- GOP (Group of Pictures) の基礎:
Iフレーム、Pフレーム、Bフレームの圧縮方式とその制約について説明します。- 特殊再生の実現方法:
スキップ、シーク、倍速再生などの特殊再生を行うために、どのようにVideoToolBoxをどう利用すれば良いのかを具体的なコードを交えて説明します。このトークを通じて、参加者はMPEGフォーマットの重要な仕組みを理解し、VideoToolBoxを用いた特殊再生の実装方法について学ぶことができます。
引用: fortee
資料
感想
まずはMPEGの説明や歴史から説明していただき、それから日頃、AVPlayer
がいい感じやってくれているところを、MPEGの構造を理解してVideoToolBox
で実装を行ってくれました。
MPEGってMoving Picture Experts Group
の略なんですね、、。
普段は何気なく見ている動画ですが、動画のコーデックや音声のコーデック、タイミングの制御、PTS(Presentation Time Stamp)の重要性など、こんなにも動画再生における処理が複雑だったのかと改めて認識しました。
今回はあえてVideoToolBox
を使用した特殊再生を見せていただいたのですが、「特に特別な理由がない限り、AVPlayer
を使用した方がいい」とのことでした。笑
CallKit
と併用すると、AVPlayer
使えなくあるとのことで 、そういった使用できない場合は、VideoToolBox
などの下位レイヤーに触れる必要があるとのことでした。
MPEGの構造を理解することで、どういった処理が必要なのか、されるのかを理解できると見せていただいたことでVideoToolBox
が何故そのような処理を行う必要があるのかの理解も深まる気がしました。
この考え方は、VideoToolBox
だけに留まらず、他のものにも活用できそうです。APIがなぜそのような処理をしているのかしっかり掘り下げて理解を深めることが大事ですね。
おわりに
普段、自分があまり触れない領域の話だったので、動画を再度見て理解を深めたいと思います。
参考